// ts中泛型：指在定义函数或者类的没有指定类型，在调用中在定义具体的类型


export { }   //确保跟其他实例没有成员冲突

// 通过给定长度及值，定义一个数字类的数组
function createdArray(length:number,value:number):number[]{
    return Array<number>(length).fill(value)
}
// 定义一个字符串数组
function createdStrArray(length:number,value:string):string[]{
    return Array<string>(length).fill(value)
}
// 缺点是无法根据入参类型定义数组函数的返回类型

const arr = createdArray(3,100)
console.log(arr);   //[100,100,100]
const arrStr = createdStrArray(3,'aa')
console.log(arrStr);  //[ 'aa', 'aa', 'aa' ]


// 通过定义一个函数的泛型
function createdArrayEl<T>(length:number,value:T):T[]{
    return Array<T>(length).fill(value)
}

// 调用定义函数的具体类型
const arrEl =createdArrayEl<string>(3,'sss')
const arrEl2 = createdArrayEl<number>(3,2020)
console.log(arrEl);  //[ 'sss', 'sss', 'sss' ]
console.log(arrEl2);   //[ 2020, 2020, 2020 ]
  
